
import 'package:flutter/material.dart';
// import 'package:package_info/package_info.dart'; //检测版本号  https://pub.dev/packages/package_info



// import 'package:path_provider/path_provider.dart';  //获取文件存储路径  //https://pub.dev/packages/path_provider
// import 'dart:io';


// import 'package:open_file/open_file.dart';   //打开文件插件  //https://pub.dev/packages/open_file

// import 'package:flutter_downloader/flutter_downloader.dart';  //下载文件  //https://pub.dev/packages/flutter_downloader
/*

1、获取本地版本号
2、请求服务器获取服务器版本号 
3、本地版本和服务器版本不一致提示升级，弹窗提示用户是否更新 
4、用户确定升级，调用文件传输方法下载 apk 文件 
5、监听下载进度
6、下载完成打开 Apk 进行安装
注意:在 Ios 中没法直接下载安装，如果版本不一致直接跳转到 Ios 应用对应的应用市场就 可以了。
配置版本号:
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.jdshop.demo" xmlns:android="http://schemas.android.com/apk/res/android">
2、升级 app 之前的准备工作配置权限 配置 AndroidMenifest.xml 文件
3、Android 升级 app 涉及的 API 库
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
注意事项
1、服务器的 App 版本必须大于本地 App 版本
2、本地 App 和服务器 App 的包名称 签名必须一致，这样的话服务器的包才可以替换本地 的包。
*/


class UpgradeAppPage extends StatefulWidget {
  UpgradeAppPage({Key key}) : super(key: key);

  _UpgradeAppPageState createState() => _UpgradeAppPageState();
}

class _UpgradeAppPageState extends State<UpgradeAppPage> {

//   @override
//   void initState(){
//     // TODO: implement initState

    
//     super.initState();

//     this._getPackageInfo();

//     this._getAppPath();

    

//   }
//   //弹出Dialog
//   _showDialog() async{
//     var alertRel=await showDialog(
//         context: context,
//         builder: (context){
//             return AlertDialog(
//                 title: Text("更新APP提示!"),
//                 content: Text("发现新的版本，新版本修复了如下bug 是否更新!"),
//                 actions: <Widget>[
//                   FlatButton(
//                     child: Text("否"),
//                     onPressed: (){
//                         Navigator.pop(context,'Cancle');
//                     },
//                   ),
//                    FlatButton(
//                     child: Text("是"),
//                     onPressed: (){
//                       Navigator.pop(context,'Ok');
//                     },
//                   )
//                 ],
//             );
//         }
//       );
    
//   }

//   //获取版本号
//   _getPackageInfo() async{
//     PackageInfo packageInfo = await PackageInfo.fromPlatform();
//     String appName = packageInfo.appName;
//     String packageName = packageInfo.packageName;
//     String version = packageInfo.version;
//     String buildNumber = packageInfo.buildNumber;
    

//     print("appName:${appName}");

//     print("packageName:${packageName}");

//     print("version:${version}");
    
//     print("buildNumber:${buildNumber}");

//   }

// //获取路径
//   _getAppPath() async{
//     Directory tempDir = await getTemporaryDirectory();
//     String tempPath = tempDir.path;

//     Directory appDocDir = await getApplicationDocumentsDirectory();
//     String appDocPath = appDocDir.path;

//     var directory = await getExternalStorageDirectory();

    
//     String storageDirectory=directory.path;


//     print("tempPath:${tempPath}");

//     print("appDocDir:${appDocPath}");

//     print("StorageDirectory:${storageDirectory}");
//   }

//   //下载打开文件
  _downLoad()async {
         
//          final directory = await getExternalStorageDirectory();
//          String _localPath = directory.path;

//         final taskId = await FlutterDownloader.enqueue(
//           url: "http://www.ionic.wang/jdshop.apk",
//           savedDir: _localPath,
//           showNotification:
//               true, // show download progress in status bar (for Android)
//           openFileFromNotification:
//               true, // click on notification to open downloaded file (for Android)
//         );
       
//         FlutterDownloader.registerCallback((id, status, progress) {

//           print(status);
//           // code to update your UI
//           print('1111111');
//           print(progress);
//         });      

//         //打开文件
//         OpenFile.open("${_localPath}/jdshop.apk");
     
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
       child: Icon(Icons.arrow_downward),
       onPressed: _downLoad,
     ),
      appBar: AppBar(
        title: Text("app升级演示"),
      ),
      body: Text("app升级演示"),
    );
  }
}